package cn.mujiankeji.mbrowser.功能.阅读框

import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import cn.mujiankeji.mbrowser.功能.阅读框.模型.间距
import cn.mujiankeji.mbrowser.数据.配置项.应用配置
import com.blankj.utilcode.util.BrightnessUtils
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.runBlocking

class 阅读框状态(来源 : 阅读内容来源<*>) {


    var 显示导航 by mutableStateOf(false)
    var 显示设置 by mutableStateOf(false)

    // 目录也应当在页面中显示
    var 显示目录 by mutableStateOf(false)

    var 夜间模式 by mutableStateOf<Boolean>(应用配置.阅读器.夜间模式())
        private set

    fun 设置夜间模式(b : Boolean){
        夜间模式 = b
        应用配置.阅读器.设置夜间模式(b)
    }

    var 含上一章 by mutableStateOf(false)
    var 含下一章 by mutableStateOf(false)
    fun 跳到上一章(){
        // todo
    }

    fun 跳到下一章(){
        // todo
    }

    fun 刷新(){
        // todo 刷新当前页
    }

    fun 退出(){
        // todo 推出阅读
    }

    // ---- 设置 ----
    var 字体大小 by mutableStateOf<Int>(runBlocking { 应用配置.阅读器.字体大小().first() })
        private set
    fun 字体增大(){
        字体大小 ++
        runBlocking {
            应用配置.阅读器.设置字体大小(字体大小)
        }
    }
    fun 字体减少(){
        字体大小 --
        runBlocking {
            应用配置.阅读器.设置字体大小(字体大小)
        }
    }

    var 行间距 by mutableStateOf<间距>(应用配置.阅读器.行段间距())
        private set
    fun 设置行间距(间距 : 间距){
        行间距 = 间距
        应用配置.阅读器.设置行段间距(间距)
    }

    var 页面边距 by mutableStateOf<间距>(应用配置.阅读器.页面边距())
        private set
    fun 设置页面间距(间距 : 间距){
        页面边距 = 间距
        应用配置.阅读器.设置页面边距(间距)
    }

    var 亮度 by mutableStateOf<Float>(BrightnessUtils.getBrightness() / 255f)
        private set
    fun 设置亮度(f : Float){
        BrightnessUtils.setBrightness((f * 255).toInt())
        亮度 = f
    }
}


